<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
 "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Apache HTTP Server: Notes about Compatibility with NCSA's Server</TITLE>
</HEAD>
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<BODY
 BGCOLOR="#FFFFFF"
 TEXT="#000000"
 LINK="#0000FF"
 VLINK="#000080"
 ALINK="#FF0000"
>
<!--#include virtual="header.html" -->
<H1 ALIGN="CENTER">Compatibility Notes with NCSA's Server</H1>

<HR>

While Apache is for the most part a drop-in replacement for NCSA's
httpd, there are a couple gotcha's to watch out for.  These are mostly
due to the fact that the parser for config and access control files
was rewritten from scratch, so certain liberties the earlier servers
took may not be available here.  These are all easily fixable.  If you
know of other non-fatal problems that belong here, <A
HREF="http://www.apache.org/bug_report.html">let us know.</A>

<P>Please also check the <A HREF="known_client_problems.html">known
client problems</A> page.

<OL>
<LI>As of Apache 1.3.1, methods named in a
    <A HREF="../mod/core.html#limit"><SAMP>&lt;Limit&gt;</SAMP></A>
    section <EM>must</EM> be listed in upper-case.  Lower- or mixed-case
    method names will result in a configuration error.
    <P>
    </P>
</LI>

<LI>The basic mod_auth <CODE>AuthGroupFile</CODE>-specified group file
    format allows commas between user names - Apache does not.

<P>
<LI>If you follow the NCSA guidelines for setting up access
    restrictions based on client domain, you may well have added
    entries for, <CODE>AuthType, AuthName, AuthUserFile</CODE> or
    <CODE>AuthGroupFile</CODE>.  <STRONG>None</STRONG> of these are
    needed (or appropriate) for restricting access based on client
    domain.  When Apache sees <CODE>AuthType</CODE> it (reasonably)
    assumes you are using some authorization type based on username
    and password.  Please remove <CODE>AuthType</CODE>, it's
    unnecessary even for NCSA.

<P>
<LI><CODE>OldScriptAlias</CODE> is no longer supported.

<P>
<LI><CODE>exec cgi=""</CODE> produces reasonable <STRONG>malformed
  header</STRONG> responses when used to invoke non-CGI scripts.<BR>
  The NCSA code ignores the missing header. (bad idea)
  <BR>Solution: write CGI to the CGI spec and use
  <CODE>include&nbsp;virtual</CODE>, or use <CODE>exec cmd=""</CODE> instead.

<P>
<LI>Icons for FancyIndexing broken - well, no, they're not broken,
    we've just upgraded the icons from flat .xbm files to pretty and
    much smaller .gif files, courtesy of <A
    HREF="mailto:kevinh@eit.com">Kevin Hughes</A> at <A
    HREF="http://www.eit.com/">EIT</A>.  If you are using the same
    srm.conf from an old distribution, make sure you add the new <A
    HREF="../mod/mod_autoindex.html#addicon">AddIcon</A>, <A
    HREF="../mod/mod_autoindex.html#addiconbytype">AddIconByType</A>,
    and <A
    HREF="../mod/mod_autoindex.html#defaulticon">DefaultIcon</A>
    directives.

<P>
<LI>Apache versions before 1.2b1 will ignore the last line of configuration
    files if the last line does not have a trailing newline. This affects
    configuration files (httpd.conf, access.conf and srm.conf), and
    htpasswd and htgroup files.

<P>
<LI>Apache does not permit commas delimiting the methods in &lt;Limit&gt;.

<P>
<LI>Apache's <CODE>&lt;VirtualHost&gt;</CODE> treats all addresses as
    "optional" (<EM>i.e.</EM>, the server should continue booting if it can't
    resolve the address).  Whereas in NCSA the default is to fail
    booting unless an added <CODE>optional</CODE> keyword is included.

<P>
<LI>Apache does not implement <CODE>OnDeny</CODE> use
    <A HREF="../mod/core.html#errordocument"><CODE>ErrorDocument</CODE></A>
    instead.

<P>
<LI>Apache (as of 1.3) always performs the equivalent of
    <CODE>HostnameLookups minimal</CODE>.  <CODE>minimal</CODE> is not an
    option to <A HREF="../mod/core.html#hostnamelookups"><CODE>
    HostnameLookups</CODE></A>.

<P>
<LI>To embed spaces in directive arguments NCSA used a backslash
    before the space. Apache treats backslashes as normal characters. To
    embed spaces surround the argument with double-quotes instead.

<P>
<LI>Apache does not implement the NCSA <CODE>referer</CODE>
    directive.  See <A HREF="http://bugs.apache.org/index/full/968">
    PR#968</A> for a few brief suggestions on alternative ways to 
    implement the same thing under Apache.

<P>
<LI>Apache does not allow ServerRoot settings inside a VirtualHost
    container.  There is only one global ServerRoot in Apache; any desired
    changes in paths for virtual hosts need to be made with the explicit
    directives, eg. DocumentRoot, TransferLog, <EM>etc.</EM>

</OL>

More to come when we notice them....

<!--#include virtual="footer.html" -->
</BODY>
</HTML>
